স্ট্রাকচার এবং পয়েন্টার

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming) স্ট্রাকচার এবং ইউনিয়ন |
255
255

C++ এ স্ট্রাকচার এবং পয়েন্টার একসাথে ব্যবহার করে স্ট্রাকচারের ডেটা মেম্বারে সহজে অ্যাক্সেস করা যায়। স্ট্রাকচারের অবজেক্টের ঠিকানা ধারণ করতে পয়েন্টার ব্যবহার করা যেতে পারে, এবং সেই ঠিকানা ব্যবহার করে স্ট্রাকচারের সদস্যদের অ্যাক্সেস করা যায়।

স্ট্রাকচারের পয়েন্টার ঘোষণা

স্ট্রাকচারের পয়েন্টার ঘোষণা করার সময় struct কিওয়ার্ডের সাথে পয়েন্টার চিহ্ন * ব্যবহার করা হয়। উদাহরণস্বরূপ:

struct Person {
    string name;
    int age;
};

Person *ptr; // Person স্ট্রাকচারের একটি পয়েন্টার

স্ট্রাকচারের পয়েন্টার ব্যবহার

স্ট্রাকচারের পয়েন্টার ব্যবহার করে স্ট্রাকচারের ডেটা মেম্বার অ্যাক্সেস করার জন্য -> (arrow) অপারেটর ব্যবহার করা হয়।

উদাহরণ: স্ট্রাকচারের পয়েন্টার ব্যবহার

#include <iostream>
using namespace std;

struct Person {
    string name;
    int age;
};

int main() {
    Person person1 = {"Alice", 25}; // একটি স্ট্রাকচার অবজেক্ট তৈরি করা
    Person *ptr = &person1; // person1 এর ঠিকানা ptr এ রাখা হলো

    // পয়েন্টার ব্যবহার করে স্ট্রাকচারের মেম্বার অ্যাক্সেস করা
    cout << "Name: " << ptr->name << endl; // Output: Name: Alice
    cout << "Age: " << ptr->age << endl;   // Output: Age: 25

    // পয়েন্টার ব্যবহার করে মান পরিবর্তন করা
    ptr->age = 26;
    cout << "Updated Age: " << person1.age << endl; // Output: Updated Age: 26

    return 0;
}

বর্ণনা:

  • এখানে person1 নামের একটি Person স্ট্রাকচারের অবজেক্ট তৈরি করা হয়েছে, এবং ptr নামের একটি পয়েন্টার person1 এর ঠিকানা ধরে রেখেছে।
  • ptr->name এবং ptr->age ব্যবহার করে name এবং age মেম্বার অ্যাক্সেস করা হয়েছে।
  • পয়েন্টারের মাধ্যমে age মেম্বারের মান পরিবর্তন করা হয়েছে।

ডাইনামিক্যালি মেমোরি বরাদ্দ এবং স্ট্রাকচারের পয়েন্টার

C++ এ new অপারেটর ব্যবহার করে স্ট্রাকচারের জন্য ডাইনামিক্যালি মেমোরি বরাদ্দ করা যায় এবং পয়েন্টারের মাধ্যমে সেই মেম্বারগুলিকে অ্যাক্সেস করা যায়।

উদাহরণ: ডাইনামিক মেমোরি বরাদ্দ এবং স্ট্রাকচারের পয়েন্টার ব্যবহার

#include <iostream>
using namespace std;

struct Person {
    string name;
    int age;
};

int main() {
    // ডাইনামিক্যালি Person স্ট্রাকচারের মেমোরি বরাদ্দ
    Person *ptr = new Person;

    // মেম্বার ফিল্ডে মান অ্যাসাইন করা
    ptr->name = "Bob";
    ptr->age = 30;

    // মান প্রদর্শন করা
    cout << "Name: " << ptr->name << endl; // Output: Name: Bob
    cout << "Age: " << ptr->age << endl;   // Output: Age: 30

    // মেমোরি মুক্ত করা
    delete ptr;

    return 0;
}

বর্ণনা:

  • এখানে new অপারেটর ব্যবহার করে Person স্ট্রাকচারের জন্য ডাইনামিক্যালি মেমোরি বরাদ্দ করা হয়েছে এবং ptr নামের একটি পয়েন্টার সেটির ঠিকানা ধারণ করছে।
  • ptr->name এবং ptr->age ব্যবহার করে মেম্বার ফিল্ডে মান অ্যাসাইন করা হয়েছে এবং প্রদর্শন করা হয়েছে।
  • delete অপারেটর ব্যবহার করে ডাইনামিক্যালি বরাদ্দকৃত মেমোরি মুক্ত করা হয়েছে।

অ্যারে অফ স্ট্রাকচারের পয়েন্টার

পয়েন্টার ব্যবহার করে স্ট্রাকচারের অ্যারে তৈরি করা যায় এবং সেই অ্যারের প্রতিটি উপাদানে অ্যাক্সেস করা সম্ভব।

উদাহরণ: অ্যারে অফ স্ট্রাকচারের পয়েন্টার

#include <iostream>
using namespace std;

struct Person {
    string name;
    int age;
};

int main() {
    // 3টি স্ট্রাকচার অবজেক্টের জন্য মেমোরি বরাদ্দ
    Person *persons = new Person[3];

    // প্রতিটি অবজেক্টের মেম্বার সেট করা
    persons[0].name = "Alice";
    persons[0].age = 25;

    persons[1].name = "Bob";
    persons[1].age = 30;

    persons[2].name = "Charlie";
    persons[2].age = 35;

    // অবজেক্টের তথ্য প্রদর্শন
    for (int i = 0; i < 3; i++) {
        cout << "Person " << i + 1 << " - Name: " << persons[i].name << ", Age: " << persons[i].age << endl;
    }

    // মেমোরি মুক্ত করা
    delete[] persons;

    return 0;
}

বর্ণনা:

  • এখানে Person স্ট্রাকচারের একটি অ্যারে ডাইনামিক্যালি তৈরি করা হয়েছে, যার আকার ৩।
  • প্রতিটি অবজেক্টের name এবং age মেম্বারে আলাদা আলাদা মান সেট করা হয়েছে।
  • for লুপ ব্যবহার করে প্রতিটি অবজেক্টের তথ্য প্রদর্শন করা হয়েছে।
  • অবশেষে delete[] অপারেটর ব্যবহার করে ডাইনামিক্যালি বরাদ্দকৃত মেমোরি মুক্ত করা হয়েছে।

সারসংক্ষেপ

  • স্ট্রাকচারের পয়েন্টার ব্যবহার করে স্ট্রাকচারের ডেটা মেম্বার সহজেই অ্যাক্সেস এবং ম্যানিপুলেট করা যায়।
  • পয়েন্টারের মাধ্যমে স্ট্রাকচারের জন্য ডাইনামিক্যালি মেমোরি বরাদ্দ করা সম্ভব।
  • স্ট্রাকচারের জন্য অ্যারে অফ পয়েন্টার তৈরি করে একই ধরনের একাধিক ডেটা মেম্বার পরিচালনা করা যায়।

স্ট্রাকচারের সাথে পয়েন্টার ব্যবহার প্রোগ্রামিংয়ে মেমোরি ব্যবস্থাপনা এবং ডেটা ম্যানেজমেন্টকে সহজতর করে, যা বড় প্রোগ্রামে কার্যকর।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion